package a_doubleWrite;

/**
 * 28. 实现 strStr()
 * 实现 strStr() 函数。
 * <p>
 * 给你两个字符串 haystack 和 needle ，请你在 haystack 字符串中找出 needle 字符串出现的第一个位置（下标从 0 开始）。
 * 如果不存在，则返回  -1 。
 *
 * @author: luolidong
 * @create: 2021-07-19 16:03
 * @version: 1.0
 */
public class L28 {
    public int strStr(String haystack, String needle) {
        if (needle.length() == 0) return 0;
        if (haystack.length() == 0) return -1;
        int j = 0;
        int i = 0;
        while (j < needle.length() && i < haystack.length()) {
            if (needle.charAt(j) == haystack.charAt(i)) {
                j++;
                i++;
            } else {
                i = i - j + 1;//+1相当于从下一个位置开始
                j = 0;
            }
        }
        if (j == needle.length()) return i - j;
        return -1;
    }

    public static void main(String[] args) {
        L28 l28 = new L28();
        int i = l28.strStr("asdcvb", "dcv");
        System.out.println(i);
    }
}
